const goodsService = require("../server/goods");
const { wirteJSON } = require("../utils/func");
const path = require("path");
module.exports = class goodsController {
  // 获取所有商品
  static async getAllGoodsData(ctx) {
    try {
      const { page } = ctx.request.body;
      const tableData = await goodsService.getAllGoodsData(page);
      const total = await goodsService.getSum("all");
      wirteJSON(ctx, 200, "数据获取成功！！", {
        tableData,
        total,
      });
    } catch (err) {
      console.log(err);
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  //获取个人商品
  static async getOnlyGoodsData(ctx) {
    try {
      const { gid } = ctx.request.body;
      const data = await goodsService.getOnlyGoodsData(gid);
      wirteJSON(ctx, 200, "头像修改成功！！", data[0]);
    } catch (err) {
      console.log(err);
      wirteJSON(ctx, 500, err.message, null);
    }
  }
  //获取个人商品
  static async getGoodsData(ctx) {
    try {
      const { uid, page } = ctx.request.body;
      const tableData = await goodsService.getGoodsData(page, uid);
      const total = await goodsService.getSum("only", uid);
      wirteJSON(ctx, 200, "头像修改成功！！", {
        tableData,
        total,
      });
    } catch (err) {
      console.log(err);
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  // 发布个人商品
  static async addGoods(ctx) {
    try {
      const { good } = ctx.request.body;
      const data = JSON.parse(good);
      const res = await goodsService.addGoods(data);
      if (res.affectedRows) {
        wirteJSON(ctx, 200, "数据插入成功！！", "数据插入成功！！");
      } else {
        wirteJSON(ctx, 404, "数据插入失败！！", "数据插入失败！！");
      }
    } catch (err) {
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  // 批量更新个人商品
  static async updateGoods(ctx) {
    try {
      const { good } = ctx.request.body;
      const data = JSON.parse(good);
      const res = await goodsService.updateGoods(data);
      if (res) {
        wirteJSON(ctx, 200, "数据更新成功！！", "数据更新成功！！");
      } else {
        wirteJSON(
          ctx,
          404,
          "数据更新失败，请试试其它账号密码！！",
          "数据更新失败，请试试其它账号密码！"
        );
      }
    } catch (err) {
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  // 打回不合格商品
  static async batchDeteleGoods(ctx) {
    try {
      const { goods } = ctx.request.body;
      const data = JSON.parse(goods);
      console.log(data);
      const res = await goodsService.batchDeteleGoods(data);
      if (res) {
        wirteJSON(ctx, 200, "数据删除成功！！", "数据删除成功！！");
      } else {
        wirteJSON(ctx, 404, "数据删除失败", "数据删除失败");
      }
    } catch (err) {
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  // upload
  static async uploadImage(ctx) {
    try {
      const { file } = ctx.request.files;
      const fileName = path.basename(file.filepath);
      const url = "/uploads/" + fileName;
      wirteJSON(ctx, 200, "上传成功！！", url);
    } catch (err) {
      wirteJSON(ctx, 500, err.message, null);
    }
  }

  static async updateGoodsNum(ctx) {
    try {
      const { goods } = ctx.request.body;
      const data = JSON.parse(goods);
      console.log(data);
      const res = await goodsService.updateGoodsNum(data);
      if (res) {
        wirteJSON(ctx, 200, "数据更新成功！！", "数据更新成功！！");
      } else {
        wirteJSON(ctx, 404, "数据更新失败", "数据更新失败");
      }
    } catch (err) {
      wirteJSON(ctx, 500, err.message, null);
    }
  }
};
